package com.reflect;

import java.lang.reflect.*;   
/**  
*通过反射执行类的方法  
*/   
class PerformMethod    
{   
 //声明一个简单的方法，用于测试   
 public int add(int a,int b){   
  return a+b;   
 }   
 public static void main(String[] args)throws Exception   
 {   
  //获取本类的类对象   
  Class c=Class.forName("com.reflect.PerformMethod");   
  /**  
  *声明add方法参数类型的集合  
  *共有两个参数，都为Integer.TYPE  
  */   
  Class []paramTypes=new Class[2];   
  paramTypes[0]=Integer.TYPE;   
  paramTypes[1]=Integer.TYPE;   
  //根据方法名和参数类型集合得到方法   
  Method method=c.getMethod("add",paramTypes);   
  //声明类的实例   
  PerformMethod pm=new PerformMethod();   
  //传入参数的集合   
  Object []argList=new Object[2];   
  //传入37和43   
  argList[0]=new Integer(37);   
  argList[1]=new Integer(43);   
  //执行后的返回值   
  Object returnObj=method.invoke(pm,argList);   
  //类型转换下   
  Integer returnVal=(Integer)returnObj;   
  //打印结果   
  System.out.println("方法执行结果为："+returnVal.intValue());   
 }   
}   
